{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5f96bb13",
   "metadata": {},
   "source": [
    "# 作业三: 光谱拟合（Spectrum fitting）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d79e000",
   "metadata": {},
   "source": [
    "<a href=\"https://sm.ms/image/2ITYJtwK7ksmFZe\" target=\"_blank\"><img src=\"https://s2.loli.net/2022/05/17/2ITYJtwK7ksmFZe.jpg\" ></a>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69cb93ba",
   "metadata": {},
   "source": [
    "#### 本次作业的目的是采用最小二乘法拟合光谱数据，即从一个测试得到的组合光谱中，拟合各个组分的比例。\n",
    "\n",
    "即：$C(\\lambda) = a A(\\lambda) + bB(\\lambda)$\n",
    "\n",
    "其中：\n",
    "\n",
    "$C(\\lambda)$为组合后的光谱\n",
    "\n",
    "$A(\\lambda)$和$B(\\lambda)$的单个组分的光谱\n",
    "\n",
    "$a$和$b$为$A$和$B$在$C$中的比例。\n",
    "\n",
    "#### 上面的等式可以写成方程组的形式：\n",
    "\n",
    "\n",
    "$$\n",
    "a A(\\lambda_{1}) + bB(\\lambda_{1}) = C(\\lambda_{1}) \\\\\n",
    "a A(\\lambda_{2}) + bB(\\lambda_{2}) = C(\\lambda_{2}) \\\\\n",
    "a A(\\lambda_{3}) + bB(\\lambda_{3}) = C(\\lambda_{3}) \\\\\n",
    "... ... \\\\\n",
    "a A(\\lambda_{i}) + bB(\\lambda_{i}) = C(\\lambda_{i})\\\\\n",
    "... ... \\\\\n",
    "a A(\\lambda_{n}) + bB(\\lambda_{n}) = C(\\lambda_{n})\n",
    "$$\n",
    "\n",
    "#### 上面的方程组可以进一步写成矩阵的形式：\n",
    "\n",
    "$$\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "A(\\lambda_{1}) & A(\\lambda_{1}) \\\\\n",
    "A(\\lambda_{2}) & A(\\lambda_{2}) \\\\\n",
    "A(\\lambda_{3}) & A(\\lambda_{3}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{i}) & A(\\lambda_{i}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{n}) & A(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "a \\\\\n",
    "b\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "C(\\lambda_{1})\\\\\n",
    "C(\\lambda_{2})\\\\\n",
    "C(\\lambda_{3})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{i})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "#### 该方程可以简化为$Ax=b$的形式，其中:\n",
    "\n",
    "$$\n",
    "A=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "A(\\lambda_{1}) & A(\\lambda_{1}) \\\\\n",
    "A(\\lambda_{2}) & A(\\lambda_{2}) \\\\\n",
    "A(\\lambda_{3}) & A(\\lambda_{3}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{i}) & A(\\lambda_{i}) \\\\\n",
    "... & ... \\\\\n",
    "A(\\lambda_{n}) & A(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "$$\n",
    "x=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "a \\\\\n",
    "b\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "$$\n",
    "b=\n",
    "\\left[\n",
    "\\begin{matrix}\n",
    "C(\\lambda_{1})\\\\\n",
    "C(\\lambda_{2})\\\\\n",
    "C(\\lambda_{3})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{i})\\\\\n",
    "...\\\\\n",
    "C(\\lambda_{n})\n",
    "\\end{matrix}\n",
    "\\right]\n",
    "$$\n",
    "\n",
    "\n",
    "#### 因此，根据最小二乘法，最优的$a$、$b$向量的值应为：\n",
    "$$\\bar{x}=\\frac{A^Tb}{A^TA}$$\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98edc9a0",
   "metadata": {},
   "source": [
    "## 1. 最小二乘函数定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4eb6557a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义fitting函数，传入A和b作为参数，返回值为拟合得到的x向量\n",
    "def fitting(A, b):\n",
    "    # 补全下面的return语句    \n",
    "    return np.linalg.inv(A.T @ A) @ (A.T@ b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4f2afdb9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义计算矩阵A的函数，传入参数为两个光谱组分对应的数据\n",
    "def calA(spectrumA, spectrumB):\n",
    "    # A的第一列为spectrumA，A的第二列为spectrumB\n",
    "    \n",
    "    # 1.初始化A矩阵，给出n和m的值\n",
    "    n = spectrumA.size\n",
    "    m = 2\n",
    "    A = np.zeros((n, m))\n",
    "    \n",
    "    # 2.给A矩阵赋值\n",
    "    A[:, 0] = spectrumA\n",
    "    A[:, 1] = spectrumB\n",
    "    \n",
    "    return A"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "75b39267",
   "metadata": {},
   "outputs": [],
   "source": [
    "def calb(C):\n",
    "    return C"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdbe38cb",
   "metadata": {},
   "source": [
    "## 2. 模拟数据"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96528660",
   "metadata": {},
   "source": [
    "自然界的很多过程可以用正态分布描述，包括各种材料的发光光谱。正态分布可以用高斯分布函数表示，具有如下形式：\n",
    "$p(x)=\\frac{1}{\\sqrt{2\\pi}\\sigma}e^{-\\frac{(x-\\mu)^2}{2{\\sigma}^2}}$\n",
    "\n",
    "其中：\n",
    "\n",
    "$\\mu$为中心波长，取值在给定的波长范围内建议取450-600之间\n",
    "\n",
    "$\\sigma$为峰的宽度，取值一般在20-50\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0dfaac62",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入必要的函数库numpy、matplotlib.pyplot\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a8b6a387",
   "metadata": {},
   "source": [
    "### 2.0 定义高斯分布函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "922b36ef",
   "metadata": {},
   "outputs": [],
   "source": [
    "def f(x, mu, sigma):\n",
    "    return 1 / (np.sqrt(2 * np.pi) * sigma) * np.exp(- (x - mu) ** 2 / (2 * (sigma ** 2)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ecf4579f",
   "metadata": {},
   "source": [
    "### 2.1 模拟A光谱"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c21f938a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x18d958c3880>]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 首先给出波长的范围\n",
    "wavelength  = np.linspace(400, 800, 101)\n",
    "\n",
    "# 定义A光谱的参数\n",
    "mu_A = np.linspace(500, 600,101)\n",
    "sigma_A = np.linspace(20,40,101)\n",
    "\n",
    "spectrumA = f(wavelength, mu_A, sigma_A)\n",
    "\n",
    "# 做图展示A光谱的形状\n",
    "plt.plot(wavelength, spectrumA)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "29edaaf3",
   "metadata": {},
   "source": [
    "### 2.2 模拟B光谱"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "8281d658",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x18d9593af10>]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 定义B光谱的参数\n",
    "mu_B = np.linspace(450, 500, 101)\n",
    "sigma_B = np.linspace(40, 50, 101)\n",
    "\n",
    "spectrumB = f(wavelength, mu_B, sigma_B)\n",
    "\n",
    "# 做图展示B光谱的形状\n",
    "plt.plot(wavelength, spectrumB)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b73d054c",
   "metadata": {},
   "source": [
    "### 2.3 模拟C光谱"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "1c9146e2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x18d959aea30>]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# C光谱是A和B的组合，组合系统分别是a和b，且应当引入测试误差\n",
    "\n",
    "def calSpectrumC(a1, a2, spectrumA, spectrumB, noiseLevel):\n",
    "    return a1 * spectrumA + a2 * spectrumB + (np.random.rand(spectrumA.size) - 0.5) * noiseLevel\n",
    "\n",
    "# 给出模拟C光谱需要的参数\n",
    "a1 = 5\n",
    "a2 = 8\n",
    "noiseLevel = 0.0001\n",
    "spectrumC = calSpectrumC(a1, a2, spectrumA, spectrumB, noiseLevel)\n",
    "\n",
    "# 做图展示C光谱的形状\n",
    "plt.plot(wavelength, spectrumC)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52803adb",
   "metadata": {},
   "source": [
    "## 3. 拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2e9f3c13",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算A矩阵\n",
    "# 补全下面的代码\n",
    "\n",
    "A = calA(spectrumA,spectrumB)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "242d7d3a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算b向量\n",
    "# 补全下面的代码\n",
    "\n",
    "b = calb(spectrumC)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "a460fb93",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 拟合求解\n",
    "\n",
    "result = fitting(A,b)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5666124a",
   "metadata": {},
   "source": [
    "## 4. 对比"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "ee51556c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Intensity')"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 分别画出拟合得到的A光谱分量和B光谱分量，以及这两个分量的和，并与C光谱做对比\n",
    "\n",
    "# 新建一个画布\n",
    "plt.figure(figsize = (12, 8))\n",
    "\n",
    "# 画出原始的C\n",
    "plt.scatter(wavelength, spectrumC, c = 'k')\n",
    "\n",
    "# 画出A分量\n",
    "plt.plot(wavelength, result[0] * spectrumA, 'b-')\n",
    "\n",
    "# 画出B分量\n",
    "plt.plot(wavelength, result[1] * spectrumB, 'g-')\n",
    "\n",
    "# 画出A分量+B分量\n",
    "plt.plot(wavelength, result[0] * spectrumA + result[1] * spectrumB, 'r-')\n",
    "\n",
    "# 定义x轴和y轴的名称\n",
    "plt.xlabel(\"Wavelength (nm)\")\n",
    "plt.ylabel(\"Intensity\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c5d453b",
   "metadata": {},
   "source": [
    "## 5. 分享心得"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e944b925",
   "metadata": {},
   "source": [
    "### 像特喵做梦一样，改改代码的小问题填填空就做完了。。。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
